02-NodeJS설치배포
Node.js 설치 및 배포 (단순 웹 서버)
이 단계의 목표는 EC2 인스턴스에 데이터베이스 연결이 없는 간단한 "Hello, World" 웹 서버를 구축하고 실행하는 것입니다.
1. 프로젝트 폴더 생성
먼저, 애플리케이션 코드를 저장할 디렉토리를 생성합니다.
# webapp 디렉토리 아래에 nodejs-app 폴더를 생성합니다.
mkdir -p ~/webapp/nodejs-app
# 생성된 폴더로 이동합니다.
cd ~/webapp/nodejs-app
2. package.json 파일 생성
Node.js 프로젝트의 기본 정보를 담고 있는 package.json 파일을 생성합니다. 이 파일에는 프로젝트에 필요한 express와 같은 라이브러리(패키지) 정보가 포함됩니다.
# vi 편집기로 package.json 파일을 엽니다.
vi package.json
i를 눌러 입력 모드로 전환한 후, 아래 내용을 그대로 복사하여 붙여넣으세요.
{
"name": "nodejs-webapp",
"version": "1.0.0",
"description": "Node.js on AWS",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.17.1",
"mysql2": "^2.3.0"
}
}
붙여넣은 후 Esc 키를 누르고 :wq 를 입력하여 저장하고 종료합니다.
3. 간단한 app.js 웹 서버 작성
이제 실제 웹 서버 역할을 하는 app.js 파일을 작성합니다.
# vi 편집기로 app.js 파일을 엽니다.
vi app.js
i를 눌러 입력 모드로 전환한 후, 아래의 "Hello, World" 코드를 복사하여 붙여넣으세요.
const express = require('express');
const app = express();
const port = 3000;
// 루트 경로('/')에 대한 GET 요청 처리
app.get('/', (req, res) => {
res.send('Hello, World! My First Web Server on EC2!');
});
// 0.0.0.0 주소와 3000번 포트에서 서버 실행
app.listen(port, '0.0.0.0', () => {
console.log(`Server is running on port ${port}. Open http://<Your-EC2-IP>:${port}`);
});
붙여넣은 후 Esc 키를 누르고 :wq 를 입력하여 저장하고 종료합니다.
4. Node.js 패키지 설치
package.json에 명시된 express와 mysql2 라이브러리를 설치합니다.
# 현재 디렉토리(~/webapp/nodejs-app)에서 실행합니다.
npm install
5. PM2로 애플리케이션 실행
애플리케이션을 백그라운드에서 안정적으로 실행하기 위해 PM2를 사용합니다.
PM2 설치 (이미 설치했다면 생략)
sudo npm install -g pm2
PM2로 서버 시작
# PM2로 app.js를 'webapp'이라는 이름으로 시작합니다.
pm2 start app.js --name webapp
# 프로세스 상태를 확인합니다.
pm2 status
status가 online으로 표시되면 정상입니다.
6. 웹 애플리케이션 접속 테스트
서버가 정상적으로 실행되었는지 브라우저를 통해 확인합니다.
-
웹 브라우저를 열고 다음 주소로 접속:
http://[EC2-Public-IP]:3000
(예:http://3.34.123.45:3000) -
정상 동작 확인:
브라우저 화면에 "Hello, World! My First Web Server on EC2!" 메시지가 표시되면 성공입니다.
문제 해결: 접속이 안 될 경우
- 보안 그룹 확인: EC2 인스턴스의 보안 그룹(
webapp-web-sg) 인바운드 규칙에포트 3000이0.0.0.0/0(또는 내 IP)으로 허용되어 있는지 확인하세요. - PM2 상태 확인:
pm2 logs webapp명령어로 에러가 없는지 확인하세요.
완료 체크리스트
단순 웹 서버 배포 완료!
이제 EC2 인스턴스 위에서 기본적인 웹 서버가 동작하고 있습니다.
다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week2-Dynamic-WebApp-Deployment/03-기본실습-NodeJS/03-RDS생성
관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week2-Dynamic-WebApp-Deployment/Week2-전체가이드